$(document).ready(function() {
	var tableId = 'example';

	var pageId = parent.pageId;
	var oTable;

	var $_upDownElem = $('#upDownArea').children();
	var $_tbodyLastTd = $("#"+tableId+" tbody tr").find(':last-child'); // 选择每行的最后一列表格
	$_tbodyLastTd.append($_upDownElem[0]);

	function selRowStyle(){ // 单元行选择反色
		var $_tbodyTr = $("#"+tableId+" tbody tr");
		
		$_tbodyTr.on('click', function( e ) {
			oTable.$('tr.row_selected').removeClass('row_selected');
			$(this).addClass('row_selected');
		});
	}
	selRowStyle();
	
	var setData = true;
	
	// 点击列表行时，获得此行的数据
	function tdClick(){
		var $_tbodyTd = $('#'+tableId+' tbody tr td');
		
		$_tbodyTd.on('click',function(){
			var aPos = oTable.fnGetPosition(this);
			var rowIndex = aPos[0];
			var aData = oTable.fnGetData(rowIndex);
			// 过滤数组，去除不要的数据
			aData = $.grep(aData,function(n,i){
				if(i!=4){
					return true;
				}
			},false);
			aData = $.merge([rowIndex],aData);
			parent.fnCkUseArgConfFill(aData);
		});
	}
	tdClick();

		
	window.delSelRow = function(){
		var anSelected = fnGetSelected( oTable );
		if ( anSelected.length !== 0 ) {
			var delRow = oTable.fnDeleteRow( anSelected[0] );
			var delRowId = delRow._aData[0];
			// 如果delRowId存在值，表示也需要删除数据库中的数据
			if(delRowId){
				$.ajax({
					url : 'useArgList/delUseArgData',
					data : {uaId : delRowId},
					type : 'Post',
					success : function(state){
//						alert(state=='success'?'成功':'失败');
					}
				})
			}
			parent.clearUseArgConf();
		}else{
			alert('请选择要删除的数据');
		}
	}
	
	window.checkSpaceNameRepeat = function(rows,oper,updateIndex){
		// 获得表格每行 node
		var nNodes = oTable.fnGetNodes();
		// 记录是否有数据源名重复
		var isExist = false;
		// 新增的数据源名
		var argName = rows[1];
		
		$.each(nNodes,function(i,n){
			$_this = $(n);
			var firstTdVal = $_this.find('td:first').text();
			//alert(firstTdVal);
			if(oper == 'add'){
				if(firstTdVal == argName)
					isExist = true;
			}else if (oper == 'update'){				 
				if(updateIndex != i && firstTdVal == argName)
					isExist = true;
			}
		});
		return isExist;
	}

	window.addDataRow = function(rows,oper,updateIndex){
		if(oper != 'add'){
			if(checkSpaceNameRepeat(rows,oper,updateIndex)){
				alert(ck.constant.checkNameIsRepeatMsg);
				return;
			}
		}

		// 获得表格每行 node
		var nNodes = oTable.fnGetNodes();
		
		// 新增的数据源名
		var argName = rows[1];
		
		var updateRow;
		$.each(nNodes,function(i,n){
			if(oper == 'update'){
				if(i == updateIndex){
					updateRow = n;
				}
			}
		});

		var dataObj = {
			pageId : pageId,
			argName : rows[1],
			argType : rows[9],
			extArgType : (rows[10] == '/' ? 'EMPTY' : rows[10]),
			argValue : rows[8],
			isShow : rows[5] == '是' ? true : false,
			isScript : rows[6]  == '是' ? true : false,
			savePoint : rows[7]
		};
		
		if(dataObj.isScript){
			$.extend(dataObj,{showValue:rows[rows.length - 1]});
		}
		
		
		if(oper == 'add'){ // 添加
			dataObj = $.extend({},dataObj);
		}else if(oper == 'update'){ // 修改
			dataObj = $.extend({
				id : rows[0],
				orderId : updateIndex
			},dataObj);
		}
		

		$.ajax({
			url : 'useArgList/saveUseArgData',
			data : {data : JSON.stringify(dataObj)},
			type : 'Post',
			success : function(state){
				//alert(state.result=='success'?'成功':'失败');
				rows[0] = state.id;
			}
		})

		rows[11] = $_upDownElem[0].outerHTML; // 放置上下移动元素

		if(oper == 'add'){
			// 新增行
			oTable.fnAddData(rows);
		}else if(oper == 'update'){
			oTable.fnUpdate(rows,updateRow);
		}

		parent.clearUseArgConf();
		// 清除表格中的选中样式
		oTable.$('tr.row_selected').removeClass('row_selected');
		return;
	}

	function fnGetSelected( oTableLocal ){
		return oTableLocal.$('tr.row_selected');
	}


	function rowUp(){// 行向上移动
		$_tbodyLastTd.on('click','.up',function(){// 向上
			parent.clearUseArgConf();			
			
			
			var aPos = oTable.fnGetPosition($(this).parents('td')[0]); 
			var rowIndex = aPos[0];//行索引

			if(rowIndex == 0){ // 判断是否为第一行
				return false;// 阻止事件冒泡行为
			}

			var tableData = oTable.fnGetData();// 表格数据
			var prevIndex = (rowIndex - 1);// 上条数据索引
			var nowIndex = rowIndex; // 当前数据索引

			var prevData = tableData[prevIndex];// 替换前的上一行数据
			var nowData = tableData[nowIndex]; // 替换前要移动的数据行		

			// 移动
			oTable.fnUpdate(nowData,prevIndex);
			oTable.fnUpdate(prevData,nowIndex);
			
			var eleObj = [];

			eleObj.push({ // 第一个元素
				eleId : prevData[0],
				order : nowIndex
			});

			eleObj.push({ // 第二个元素
				eleId : nowData[0],
				order : prevIndex
			});
			// 后台更新
			swapEleOrder(eleObj);
			
			return false; // 阻止事件冒泡行为
		});
	}

	function rowDown(){ // 行向下移动
		$_tbodyLastTd.on('click','.down',function(){
			parent.clearUseArgConf();
			
			var aPos = oTable.fnGetPosition($(this).parents('td')[0]); 
			var rowIndex = aPos[0];//行索引
			var tableData = oTable.fnGetData();// 表格数据

			if(rowIndex == (tableData.length - 1)){ // 判断是否为最后一行
				return false; // 阻止事件冒泡行为
			}

			var nextIndex = (rowIndex + 1);// 上条数据索引
			var nowIndex = rowIndex; // 当前数据索引

			var nextData = tableData[nextIndex];// 替换前的上一行数据
			var nowData = tableData[nowIndex]; // 替换前要移动的数据行		

			// 移动
			oTable.fnUpdate(nowData,nextIndex);
			oTable.fnUpdate(nextData,nowIndex);

			var eleObj = [];

			eleObj.push({ // 第一个元素
				eleId : nextData[0],
				order : nowIndex
			});

			eleObj.push({ // 第二个元素
				eleId : nowData[0],
				order : nextIndex
			});
			// 后台更新
			swapEleOrder(eleObj);
			
			return false; // 阻止事件冒泡行为
		});
	}

	/* 	交换两个元素顺序
		eleObj 是个数组(两个) 数据模式
			{
				eleId:'',  // 元素id
				order : '' // 元素顺序
			},
			{
				同上
			}
	*/
	function swapEleOrder(eleObj){
		$.ajax({
			url : 'useArgList/swapOrder',
			data : {data : JSON.stringify(eleObj)},
			type : 'POST'
		})
	}

	rowUp();
	rowDown();



	//不能调整顺序，否则移动事件会出错，与执行顺序有关～
	oTable = $("#"+tableId+"").dataTable( {
		"aoColumnDefs": [
			{ "bVisible": false, "aTargets": [ 0 ] },
			{ "bVisible": false, "aTargets": [ 8 ] },
			{ "bVisible": false, "aTargets": [ 9 ] },
			{ "bVisible": false, "aTargets": [ 10 ] }
	    ],
		"bDeferRender": false,
		"bPaginate": false,
		'bFilter' : false,
		'bSort' : false,
		'bInfo': false,
		'bLengthChange' : false,
		"bJQueryUI": true,
		"sPaginationType": "full_numbers",
		'oLanguage': {
   	                'sLengthMenu': '每页显示 _MENU_ 条记录',
   	                'sZeroRecords': '没有找到 - 对比起',
   	                'sInfo': '共 _TOTAL_ 条记录',
   	                'sInfoEmpty': '没有数据',
   	                'sInfoFiltered': '(从_MAX_条记录中检索)',
   	                'sSearch': '搜索：',
   	                'sEmptyTable': '没有数据',
   	                'oPaginate': {
   	                    'sFirst': '第一页',
   	                    'sPrevious': '上一页',
   	                    'sNext': '下一页',
   	                    'sLast': '最后一页'
   	                }
   	            }
	} );

} );
